Micron Document
Fox's Git Mirrors

Node / RFnexus / code.git / files / bitman.hh

Displaying Raw • Download

bitman.hh 350ec5903765c64ea6c4578c7e0ac684179b3a59 (350ec590) Text, 681 B

/*
Bit manipulation of byte arrays

Copyright 2018 Ahmet Inan <inan@aicodix.de>
*/

#pragma once

namespace CODE {

void xor_be_bit(uint8_t *buf, int pos, bool val)
{
buf[pos/8] ^= val<<(7-pos%8);
}

void xor_le_bit(uint8_t *buf, int pos, bool val)
{
buf[pos/8] ^= val<<(pos%8);
}

void set_be_bit(uint8_t *buf, int pos, bool val)
{
buf[pos/8] = (~(1<<(7-pos%8))&buf[pos/8])|(val<<(7-pos%8));
}

void set_le_bit(uint8_t *buf, int pos, bool val)
{
buf[pos/8] = (~(1<<(pos%8))&buf[pos/8])|(val<<(pos%8));
}

bool get_be_bit(const uint8_t *buf, int pos)
{
return (buf[pos/8]>>(7-pos%8))&1;
}

bool get_le_bit(const uint8_t *buf, int pos)
{
return (buf[pos/8]>>(pos%8))&1;
}

}


Served by rngit 1.5.2 - Generated in 0.02s